This invention relates generally to communication between electronic devices and, more particularly, relates to methods to transfer data and objects between electronic devices.
OBEX (Object Exchange) is a protocol that is similar to the Hypertext Transfer Protocol (HTTP). It provides the same basic functionality in a lighter fashion using a client-server model. OBEX consists of a protocol and an application framework. The application framework is built on top of the protocol and is used to ensure interoperability between devices and applications using OBEX. The protocol consists of a format for communication between devices and applications and a set of functions. The functions include initiating a connection, disconnecting a connection, sending an object from a client to a server (push operation), and requesting that a server return an object to a client (pull operation).
Presently, there are 3 transportsxe2x80x94IP, IrDA, and Bluetoothxe2x80x94that OBEX can operate over. Applications and devices need to know transport specific information before using a particular transport. OBEX applications typically have to be re-written each time a transport using a different protocol becomes available. More transports are becoming available that use OBEX. Re-writing OBEX applications for each new transport is time consuming and destabilizing and adds to both the development and testing effort. A method is needed whereby applications can be run on new transports that become available without having to be re-written.
In view of the aforementioned problems, OBEX is implemented in such a way as to expose a protocol independent interface. This allows OBEX applications to communicate without having to know transport specific information. The main advantage to this approach is that OBEX applications will not need to be re-written when a new protocol for OBEX becomes available. Only a small piece of transport specific data needs to be updated in order for the application to work over the new transport.
The OBEX services reside on top of an OBEX layer. The OBEX layer communicates with the transports with a interface that is independent of the transport protocol and other interfaces are provided when connections are created. The OBEX layer allocates packets and post them down to the transports for incoming data from an application or module. When an incoming data packet is received from a transport, the layer determines which of the OBEX services should receive notification, abstracts the OBEX data and provides it to the appropriate OBEX services. The OBEX layer generates outbound packets for data passed into the OBEX layer by an OBEX service. The layer generates the correct headers for the protocol being used and sends the outbound packets down to the appropriate transport for sending to an application or module.
Additional features and advantages of the invention will be made apparent from the following detailed description of illustrative embodiments which proceeds with reference to the accompanying figures.